/*
 * Copyright 2010 Katsunori Koyanagi
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package sweezy.anim.timer
{
	import flash.utils.getTimer;
	import sweezy.anim.core.ITimerClient;

	internal class TimerBase
	{

		protected var _client:ITimerClient;

		protected var _time:uint;

		private var _initialized:Boolean;

		public function TimerBase()
		{
		}

		public function destroy():void
		{
			if (!_initialized)
			{
				return;
			}

			_initialized = false;
			onDestroy();
			_client = null;
		}

		public function initialize(client:ITimerClient):void
		{
			if (_initialized)
			{
				return;
			}

			_initialized = true;
			_client = client;
			onInitialize();
		}

		public function get initialized():Boolean
		{
			return _initialized;
		}

		public function record():int
		{
			return _time = getTimer();
		}

		public function get time():int
		{
			return _time;
		}

		protected function onDestroy():void
		{
		}

		protected function onInitialize():void
		{
		}
	}
}
